@@ -307,7 +307,8 @@ |
||
| 307 | 307 |
{
|
| 308 | 308 |
"title" : "Trifonia", |
| 309 | 309 |
"link" : "/filmes/trifonia", |
| 310 |
- "videoUrl" : "fIEXEIOyh9Q" |
|
| 310 |
+ "videoUrl" : "fIEXEIOyh9Q", |
|
| 311 |
+ "videoType": "youtube" |
|
| 311 | 312 |
}, |
| 312 | 313 |
{
|
| 313 | 314 |
"title" : "Sonho contra-sono", |
@@ -315,7 +316,22 @@ |
||
| 315 | 316 |
}, |
| 316 | 317 |
{
|
| 317 | 318 |
"title" : "Animações", |
| 318 |
- "link" : "/filmes/animacoes" |
|
| 319 |
+ "link" : "submenu", |
|
| 320 |
+ "submenu" : |
|
| 321 |
+ [ |
|
| 322 |
+ {
|
|
| 323 |
+ "title" : "Video 1", |
|
| 324 |
+ "link" : "/filmes/animacao-01", |
|
| 325 |
+ "videoUrl" : "content/videos/anim_01.mov", |
|
| 326 |
+ "videoType": "file" |
|
| 327 |
+ }, |
|
| 328 |
+ {
|
|
| 329 |
+ "title" : "Video 2", |
|
| 330 |
+ "link" : "/filmes/animacao-01", |
|
| 331 |
+ "videoUrl" : "content/videos/anim_01.mov", |
|
| 332 |
+ "videoType": "file" |
|
| 333 |
+ } |
|
| 334 |
+ ] |
|
| 319 | 335 |
}, |
| 320 | 336 |
{
|
| 321 | 337 |
"title" : "Performances", |
@@ -336,6 +352,11 @@ |
||
| 336 | 352 |
"title" : "Currículo", |
| 337 | 353 |
"link" : "/textos/curriculo", |
| 338 | 354 |
"content": "<p><span>Veja o currículo <a href=\"http://google.com\">aqui</a><span></p>" |
| 355 |
+ }, |
|
| 356 |
+ {
|
|
| 357 |
+ "title" : "Contato", |
|
| 358 |
+ "link" : "/contato", |
|
| 359 |
+ "content": "<p><span>Entre em contato através do email <a href=\"mailto:cometogo2@gmail.com\">cometogo2@gmail.com</a> ou deixe uma mensagem:<span></p>" |
|
| 339 | 360 |
} |
| 340 | 361 |
] |
| 341 | 362 |
} |
@@ -40,9 +40,11 @@ |
||
| 40 | 40 |
<script src="../app/scripts/controllers/slideshow.js"></script> |
| 41 | 41 |
<script src="../app/scripts/controllers/page.js"></script> |
| 42 | 42 |
<script src="../app/scripts/controllers/video.js"></script> |
| 43 |
+ <script src="../app/scripts/controllers/contact.js"></script> |
|
| 43 | 44 |
<script src="../app/scripts/directives/wallop-slider.js"></script> |
| 44 | 45 |
<script src="../app/scripts/services/data.js"></script> |
| 45 | 46 |
<script src="../app/scripts/services/getController.js"></script> |
| 47 |
+ <script src="../app/scripts/services/mandrill.js"></script> |
|
| 46 | 48 |
<!-- endbuild --> |
| 47 | 49 |
|
| 48 | 50 |
|
@@ -25,15 +25,17 @@ angular |
||
| 25 | 25 |
'goApp.page', |
| 26 | 26 |
'goApp.video', |
| 27 | 27 |
'goApp.slider', |
| 28 |
+ 'goApp.contact', |
|
| 29 |
+ 'mandrill' |
|
| 28 | 30 |
]) |
| 29 | 31 |
|
| 30 |
- .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
|
|
| 32 |
+ .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', function($stateProvider, $urlRouterProvider, $httpProvider) {
|
|
| 31 | 33 |
|
| 32 | 34 |
// Configs |
| 33 | 35 |
//Enable cross domain calls |
| 34 |
- //$httpProvider.defaults.useXDomain = true; |
|
| 36 |
+ $httpProvider.defaults.useXDomain = true; |
|
| 35 | 37 |
//Remove the header used to identify ajax call that would prevent CORS from working |
| 36 |
- //delete $httpProvider.defaults.headers.common['X-Requested-With']; |
|
| 38 |
+ delete $httpProvider.defaults.headers.common['X-Requested-With']; |
|
| 37 | 39 |
|
| 38 | 40 |
// UI router |
| 39 | 41 |
$stateProvider |
@@ -56,6 +58,11 @@ angular |
||
| 56 | 58 |
url: "/textos/:texto", |
| 57 | 59 |
templateUrl: "views/page.html", |
| 58 | 60 |
controller: 'PageController' |
| 61 |
+ }) |
|
| 62 |
+ .state('contato', {
|
|
| 63 |
+ url: "/contato", |
|
| 64 |
+ templateUrl: "views/contact.html", |
|
| 65 |
+ controller: 'ContactController' |
|
| 59 | 66 |
}); |
| 60 | 67 |
|
| 61 | 68 |
}]); |
@@ -0,0 +1,52 @@ |
||
| 1 |
+ |
|
| 2 |
+ |
|
| 3 |
+/** |
|
| 4 |
+ * @ngdoc function |
|
| 5 |
+ * @name domainManagerApp.controller:AboutCtrl |
|
| 6 |
+ * @description |
|
| 7 |
+ * # AboutCtrl |
|
| 8 |
+ * Controller of the domainManagerApp |
|
| 9 |
+ */ |
|
| 10 |
+angular.module('goApp.contact', ['ngFx', 'ngAnimate', 'goApp.data', 'mandrill'])
|
|
| 11 |
+ .controller('ContactController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', 'Mandrill', function ($scope, $rootScope, $famous, $timeline, $location, $route, $timeout, Data, Mandrill) {
|
|
| 12 |
+ |
|
| 13 |
+ 'use strict'; |
|
| 14 |
+ |
|
| 15 |
+ console.log('> Loading Contact Page');
|
|
| 16 |
+ |
|
| 17 |
+ // Get Page Data |
|
| 18 |
+ var link = $location.url(); |
|
| 19 |
+ $scope.pageData = Data.getPageData(link); |
|
| 20 |
+ $rootScope.$on('data:loaded', function(data) {
|
|
| 21 |
+ if(!$scope.$$phase) {
|
|
| 22 |
+ $scope.$apply(function(){
|
|
| 23 |
+ $scope.pageData = Data.getPageData(link); |
|
| 24 |
+ $scope.showSlider(); |
|
| 25 |
+ }); |
|
| 26 |
+ } |
|
| 27 |
+ }); |
|
| 28 |
+ |
|
| 29 |
+ $scope.sendMessage = function(msgData){
|
|
| 30 |
+ console.log("> Sending message from " + msgData.name)
|
|
| 31 |
+ Mandrill.sendMail(msgData); |
|
| 32 |
+ } |
|
| 33 |
+ |
|
| 34 |
+ // FadeIn |
|
| 35 |
+ $timeout(function(){
|
|
| 36 |
+ $scope.showView = true; |
|
| 37 |
+ },100); |
|
| 38 |
+ // FadeOut |
|
| 39 |
+ $scope.fadeOut = function() {
|
|
| 40 |
+ $scope.showView = false; |
|
| 41 |
+ $timeout(function(){
|
|
| 42 |
+ $scope.showView = false; |
|
| 43 |
+ $location.path("/");
|
|
| 44 |
+ },800); |
|
| 45 |
+ }; |
|
| 46 |
+ |
|
| 47 |
+ |
|
| 48 |
+ |
|
| 49 |
+ |
|
| 50 |
+ |
|
| 51 |
+ |
|
| 52 |
+ }]); |
@@ -14,26 +14,35 @@ angular.module('goApp.video', ['ngFx', 'ngAnimate', 'goApp.data'])
|
||
| 14 | 14 |
|
| 15 | 15 |
console.log('> Loading Video Page');
|
| 16 | 16 |
|
| 17 |
- // Get Page Data |
|
| 18 |
- var link = $location.url(); |
|
| 19 |
- $scope.pageData = Data.getPageData(link); |
|
| 20 |
- console.log("> Youtube video: " + $scope.pageData.videoUrl);
|
|
| 21 |
- $rootScope.$on('data:loaded', function(data) {
|
|
| 22 |
- if(!$scope.$$phase) {
|
|
| 23 |
- $scope.$apply(function(){
|
|
| 24 |
- $scope.pageData = Data.getPageData(link); |
|
| 25 |
- }); |
|
| 26 |
- } else {
|
|
| 27 |
- $scope.pageData = Data.getPageData(link); |
|
| 17 |
+ $scope.showYoutube = false; |
|
| 18 |
+ $scope.showFile = false; |
|
| 19 |
+ |
|
| 20 |
+ $scope.getData = function() {
|
|
| 21 |
+ var link = $location.url(); |
|
| 22 |
+ $scope.pageData = Data.getPageData(link); |
|
| 23 |
+ console.log("> Youtube video: " + $scope.pageData.videoUrl);
|
|
| 24 |
+ if($scope.pageData.videoUrl != undefined){
|
|
| 25 |
+ $scope.startVideo(); |
|
| 28 | 26 |
} |
| 29 |
- }); |
|
| 27 |
+ $rootScope.$on('data:loaded', function(data) {
|
|
| 28 |
+ if(!$scope.$$phase) {
|
|
| 29 |
+ $scope.$apply(function(){
|
|
| 30 |
+ $scope.pageData = Data.getPageData(link); |
|
| 31 |
+ $scope.startVideo(); |
|
| 32 |
+ }); |
|
| 33 |
+ } else {
|
|
| 34 |
+ $scope.pageData = Data.getPageData(link); |
|
| 35 |
+ $scope.startVideo(); |
|
| 36 |
+ } |
|
| 37 |
+ }); |
|
| 38 |
+ } |
|
| 30 | 39 |
|
| 40 |
+ $scope.fadeIn = function() {
|
|
| 41 |
+ $timeout(function(){
|
|
| 42 |
+ $scope.showView = true; |
|
| 43 |
+ },100); |
|
| 44 |
+ } |
|
| 31 | 45 |
|
| 32 |
- // FadeIn |
|
| 33 |
- $timeout(function(){
|
|
| 34 |
- $scope.showView = true; |
|
| 35 |
- },100); |
|
| 36 |
- // FadeOut |
|
| 37 | 46 |
$scope.fadeOut = function() {
|
| 38 | 47 |
$scope.showView = false; |
| 39 | 48 |
$timeout(function(){
|
@@ -42,6 +51,60 @@ angular.module('goApp.video', ['ngFx', 'ngAnimate', 'goApp.data'])
|
||
| 42 | 51 |
},800); |
| 43 | 52 |
}; |
| 44 | 53 |
|
| 54 |
+ $scope.startVideo = function() {
|
|
| 55 |
+ if($scope.pageData.videoType == "youtube"){
|
|
| 56 |
+ if(!$scope.$$phase) {
|
|
| 57 |
+ $scope.$apply(function(){
|
|
| 58 |
+ $scope.showYoutube = true; |
|
| 59 |
+ }); |
|
| 60 |
+ } else {
|
|
| 61 |
+ $scope.showYoutube = true; |
|
| 62 |
+ } |
|
| 63 |
+ } |
|
| 64 |
+ if($scope.pageData.videoType == "file"){
|
|
| 65 |
+ if(!$scope.$$phase) {
|
|
| 66 |
+ $scope.$apply(function(){
|
|
| 67 |
+ $scope.showFile = true; |
|
| 68 |
+ $scope.startFileVideo(); |
|
| 69 |
+ }); |
|
| 70 |
+ } else {
|
|
| 71 |
+ $scope.showFile = true; |
|
| 72 |
+ $scope.startFileVideo(); |
|
| 73 |
+ } |
|
| 74 |
+ } |
|
| 75 |
+ } |
|
| 76 |
+ |
|
| 77 |
+ $scope.startFileVideo = function() {
|
|
| 78 |
+ console.log("> Playing video " + $scope.pageData.videoUrl);
|
|
| 79 |
+ var video = new VideoSurface({
|
|
| 80 |
+ size: [undefined, undefined], |
|
| 81 |
+ autoplay: true, |
|
| 82 |
+ src: $scope.pageData.videoUrl, |
|
| 83 |
+ properties: {
|
|
| 84 |
+ zIndex: 1, |
|
| 85 |
+ } |
|
| 86 |
+ }); |
|
| 87 |
+ |
|
| 88 |
+ video.setAttributes({ loop: '' });
|
|
| 89 |
+ var videoModifier = new Modifier(); |
|
| 90 |
+ videoModifier.transformFrom(function(){
|
|
| 91 |
+ //transform: Transform.translate(0, 0, 0); |
|
| 92 |
+ Transform.translate(0, 0, 0); |
|
| 93 |
+ }); |
|
| 94 |
+ console.log(video); |
|
| 95 |
+ $scope.mainView.add(videoModifier).add(video); |
|
| 96 |
+ }; |
|
| 97 |
+ |
|
| 98 |
+ var View = $famous['famous/core/View']; |
|
| 99 |
+ var Modifier = $famous['famous/core/Modifier']; |
|
| 100 |
+ var Surface = $famous['famous/core/Surface']; |
|
| 101 |
+ var Transform = $famous['famous/core/Transform']; |
|
| 102 |
+ var VideoSurface = $famous['famous/surfaces/VideoSurface']; |
|
| 103 |
+ $scope.mainView = new View(); |
|
| 104 |
+ |
|
| 105 |
+ $scope.fadeIn(); |
|
| 106 |
+ $scope.getData(); |
|
| 107 |
+ |
|
| 45 | 108 |
|
| 46 | 109 |
|
| 47 | 110 |
}]); |
@@ -0,0 +1,38 @@ |
||
| 1 |
+ |
|
| 2 |
+ |
|
| 3 |
+angular.module('mandrill', [])
|
|
| 4 |
+.service('Mandrill', [ '$rootScope', '$http', function($rootScope, $http) {
|
|
| 5 |
+ |
|
| 6 |
+ "use strict"; |
|
| 7 |
+ |
|
| 8 |
+ this.sendMail = function(msgData) {
|
|
| 9 |
+ |
|
| 10 |
+ var messagePost = {
|
|
| 11 |
+ key: "m14Wkh0PhF74K2cTvxWPHA", |
|
| 12 |
+ message: {
|
|
| 13 |
+ subject: msgData.name + " enviou uma mensagem", |
|
| 14 |
+ html: msgData.message, |
|
| 15 |
+ text: msgData.message, |
|
| 16 |
+ from_email: msgData.email, |
|
| 17 |
+ from_name: msgData.name, |
|
| 18 |
+ to: [ |
|
| 19 |
+ {
|
|
| 20 |
+ email: "james.peret@gmail.com", |
|
| 21 |
+ name: "James Peret", |
|
| 22 |
+ type: 'to' |
|
| 23 |
+ } |
|
| 24 |
+ ] |
|
| 25 |
+ } |
|
| 26 |
+ } |
|
| 27 |
+ console.log(messagePost); |
|
| 28 |
+ $http.post('https://mandrillapp.com/api/1.0/messages/send.json', { key: messagePost.key, message: messagePost.message })
|
|
| 29 |
+ .success(function(data, status, headers, config){
|
|
| 30 |
+ $rootScope.$broadcast('email:sent');
|
|
| 31 |
+ console.log("> Message sent succesfully!")
|
|
| 32 |
+ console.log(data) |
|
| 33 |
+ }); |
|
| 34 |
+ }; |
|
| 35 |
+ |
|
| 36 |
+ |
|
| 37 |
+ |
|
| 38 |
+}]); |
@@ -6,6 +6,7 @@ body {
|
||
| 6 | 6 |
margin: 0px; |
| 7 | 7 |
width: 100%; |
| 8 | 8 |
overflow-x: hidden; |
| 9 |
+ background-color: black; |
|
| 9 | 10 |
} |
| 10 | 11 |
|
| 11 | 12 |
.backfaceVisibility {
|
@@ -141,6 +142,7 @@ fa-app {
|
||
| 141 | 142 |
height: 100%; |
| 142 | 143 |
width: 100%; |
| 143 | 144 |
overflow: hidden; |
| 145 |
+ background-color: black; |
|
| 144 | 146 |
} |
| 145 | 147 |
|
| 146 | 148 |
.fixed-top-right {
|
@@ -191,10 +193,32 @@ fa-app {
|
||
| 191 | 193 |
} |
| 192 | 194 |
.page h1 span { background-color: white; }
|
| 193 | 195 |
.page .page-content { margin-top: 25px;}
|
| 196 |
+.page .page-content p { font-size: 16px; line-height: 22px; margin-top: 7px; margin-bottom: 7px;}
|
|
| 194 | 197 |
.page .page-content p span { background-color: white; padding-top: 1px; padding-left: 1px; padding-right: 1px;}
|
| 195 | 198 |
.page .page-content p span a { color: black; text-decoration: underline}
|
| 196 | 199 |
.page .page-content p span a:hover { color: white; text-decoration: none; background-color: black; padding-top: 1px;}
|
| 197 | 200 |
|
| 201 |
+.page .page-content input, .page .page-content textarea {
|
|
| 202 |
+ font-size: 16px; |
|
| 203 |
+ border: none; |
|
| 204 |
+ padding-top: 0px; |
|
| 205 |
+ padding-left: 1px; |
|
| 206 |
+ padding-right: 1px; |
|
| 207 |
+ padding-bottom: 1px; |
|
| 208 |
+ width: 300px; |
|
| 209 |
+} |
|
| 210 |
+ |
|
| 211 |
+.page .page-content textarea {
|
|
| 212 |
+ width: 500px; |
|
| 213 |
+} |
|
| 214 |
+ |
|
| 215 |
+.page .page-content .btn {
|
|
| 216 |
+ position: inherit; |
|
| 217 |
+ width: auto; |
|
| 218 |
+ padding-bottom: 1px; |
|
| 219 |
+ padding-top: 2px; |
|
| 220 |
+} |
|
| 221 |
+ |
|
| 198 | 222 |
.embed-responsive {
|
| 199 | 223 |
position: relative; |
| 200 | 224 |
display: block; |
@@ -0,0 +1,20 @@ |
||
| 1 |
+ |
|
| 2 |
+ <div class="layer-content fx-fade-normal fx-easing-quad fx-speed-500" ng-show="showView"> |
|
| 3 |
+ <a class="btn-menu fixed-top-right" ng-click="fadeOut()">X</a> |
|
| 4 |
+ <div class="Aligner page"> |
|
| 5 |
+ <div class="Aligner-item Aligner-item--top"> |
|
| 6 |
+ <h1><span>{{pageData.title}}</span></h1>
|
|
| 7 |
+ <div class="page-content" ng-bind-html="pageData.content"></div> |
|
| 8 |
+ <form name="contactForm" id="contactForm" class="page-content" ng-submit="contactForm.$valid && sendTheMail()" novalidate> |
|
| 9 |
+ <p><span>Nome:</span> <input type="text" ng-model="msgData.name" id="userName" required></p> |
|
| 10 |
+ <p><span>Email:</span> <input type="email" ng-model="msgData.email" id="userEmail" required></p> |
|
| 11 |
+ <p><span>Mensagem:</span></p> |
|
| 12 |
+ <p><textarea type="text" ng-model="msgData.message" id="userMessage" required rows="10"></textarea></p> |
|
| 13 |
+ <input class="btn" type="submit" ng-click="sendMessage(msgData)" value="Enviar" id="SubmitBtn"> |
|
| 14 |
+ </form> |
|
| 15 |
+ |
|
| 16 |
+ |
|
| 17 |
+ </div> |
|
| 18 |
+ </div> |
|
| 19 |
+ |
|
| 20 |
+ </div> |
@@ -2,11 +2,18 @@ |
||
| 2 | 2 |
<div class="layer-content fx-fade-normal fx-easing-quad fx-speed-500" ng-show="showView"> |
| 3 | 3 |
<a class="btn-menu fixed-top-right" ng-click="fadeOut()">X</a> |
| 4 | 4 |
<div class="Aligner video-page"> |
| 5 |
- <div class="Aligner-item"> |
|
| 5 |
+ <div class="Aligner-item" ng-show="showYoutube"> |
|
| 6 | 6 |
<div class="embed-responsive embed-responsive-16by9"> |
| 7 | 7 |
<youtube-video class="embed-responsive-item" video-id="pageData.videoUrl"></youtube-video> |
| 8 | 8 |
</div> |
| 9 | 9 |
</div> |
| 10 |
+ <div class="Aligner-item" ng-show="showFile"> |
|
| 11 |
+ <div class="embed-responsive embed-responsive-16by9"> |
|
| 12 |
+ <fa-app id="app2"> |
|
| 13 |
+ <fa-render-node fa-node="mainView" id="render"></fa-render-node> |
|
| 14 |
+ </fa-app> |
|
| 15 |
+ </div> |
|
| 16 |
+ </div> |
|
| 10 | 17 |
</div> |
| 11 | 18 |
|
| 12 | 19 |
</div> |